home *** CD-ROM | disk | FTP | other *** search
- unit Dbwavbtn;
- interface
- uses
- SysUtils, WinTypes, WinProcs, Messages, Classes, Graphics, Controls,
- Forms, Dialogs, Buttons, DB, DBTables;
-
- Type
- TDBWavButton = class(TBitBtn)
- private
- { Private declarations }
- FDataLink: TFieldDataLink;
- MemoryStream: TMemoryStream;
- procedure DataChange(Sender: TObject);
-
- protected
- { Protected declarations }
- function GetDataSource: TDataSource;
- procedure SetDataSource(Value: TDataSource);
-
- function GetDataField: string;
- procedure SetDataField(const Value: string);
-
- public
- { Public declarations }
- constructor Create(AOwner: TComponent); override;
- destructor Destroy; override;
- procedure Click; override;
-
- published
- { Published declarations }
- property DataSource: TDataSource read GetDataSource write SetDataSource;
- property DataField: String read GetDataField write SetDataField;
- end;
-
- procedure Register;
-
- implementation
- uses MMSystem;
-
- constructor TDBWavButton.Create(AOwner: TComponent);
- begin
- inherited Create(AOwner);
- FDataLink := TFieldDataLink.Create;
- FDataLink.OnDataChange := DataChange;
- MemoryStream := TMemoryStream.Create;
- end;
-
- destructor TDBWavButton.Destroy;
- begin
- sndPlaySound(nil, 0);
- FDataLink.Free;
- MemoryStream.Free;
- inherited Destroy;
- end;
-
- procedure TDBWavButton.DataChange(Sender: TObject);
- begin
- Enabled := Assigned(FDataLink);
- if Enabled then
- begin
- sndPlaySound(nil, 0);
- MemoryStream.Clear;
- if (FDataLink.Field IS TBlobField) then
- with (FDataLink.Field AS TBlobField) do SaveToStream(MemoryStream)
- end
- end;
-
- procedure TDBWavButton.Click;
- begin
- sndPlaySound(MemoryStream.Memory, SND_ASYNC OR SND_MEMORY);
- inherited Click;
- end;
-
- function TDBWavButton.GetDataSource: TDataSource;
- begin
- Result := FDataLink.DataSource;
- end;
-
- procedure TDBWavButton.SetDataSource(Value: TDataSource);
- begin
- FDataLink.DataSource := Value;
- end;
-
- function TDBWavButton.GetDataField: string;
- begin
- Result := FDataLink.FieldName;
- end;
-
- procedure TDBWavButton.SetDataField(const Value: string);
- begin
- FDataLink.FieldName := Value;
- end;
-
- procedure Register;
- begin
- RegisterComponents('Dr.Bob', [TDBWavButton]);
- end;
-
- end.
-
-